package com.canyou.enums;

import lombok.Getter;

import java.util.Arrays;

/**
 * 数据权限类型枚举
 *
 * @author fy
 * @date 20/03/16 8:10
 */
@Getter
public enum DataPermEnum {

    /**
     * 数据权限跟角色绑定
     */
    SELF_ONLY(1, "user_id", "仅本人数据"),
    DEPT_ONLY(2, "dept_id", "所在部门数据"),
    DEPT_AND_CHILDREN(3, "dept_id", "所在部门及下属部门数据"),
    ORG_ONLY(4, "org_id", "所在公司数据"),
    ORG_AND_CHILDREN(5, "org_id", "所在公司及下属公司数据"),

    ;

    /**
     * 根据 数据权限类型值 获取对应类型枚举值
     *
     * @param value
     * @return
     */
    public static DataPermEnum valueOf(final Integer value) {
        return Arrays.stream(DataPermEnum.values())
                .filter(enu -> enu.getValue().equals(value))
                .findFirst()
                .orElse(DataPermEnum.SELF_ONLY);
    }

    public static String getName(final Integer value) {
        return DataPermEnum.valueOf(value).getName();
    }

    public static String getScope(final Integer value) {
        return DataPermEnum.valueOf(value).getScope();
    }

    DataPermEnum(Integer value, String scope, String name) {
        this.value = value;
        this.scope = scope;
        this.name = name;
    }

    private Integer value;
    private String scope;
    private String name;

}
